package com.micro.train.service;

import com.micro.train.entity.Train;

import java.util.List;

/**
 * 火车信息服务接口
 */
public interface TrainService {
    
    /**
     * 添加列车信息
     */
    Train addTrain(Train train);
    
    /**
     * 更新列车信息
     */
    Train updateTrain(Long trainId, Train train);
    
    /**
     * 删除列车信息
     */
    void deleteTrain(Long trainId);
    
    /**
     * 获取所有列车信息
     */
    List<Train> getAllTrains();
    
    /**
     * 根据ID获取列车信息
     */
    Train getTrainById(Long trainId);
    
    /**
     * 根据车次查询列车信息
     */
    Train getTrainByNumber(String trainNumber);
    
    /**
     * 根据列车类型查询
     */
    List<Train> getTrainsByType(String trainType);
    
    /**
     * 根据始发站ID查询
     */
    List<Train> getTrainsByDepartureStation(Long departureStationId);
    
    /**
     * 根据终点站ID查询
     */
    List<Train> getTrainsByTerminalStation(Long terminalStationId);
    
    /**
     * 根据状态查询
     */
    List<Train> getTrainsByStatus(Integer status);
    
    /**
     * 根据始发站和终点站查询
     */
    List<Train> getTrainsByRoute(Long departureStationId, Long terminalStationId);
    
    /**
     * 检查车次是否存在
     */
    boolean existsByTrainNumber(String trainNumber);
    
    /**
     * 根据车次号查询车次ID
     */
    Long getTrainIdByTrainNumber(String trainNumber);
}
